package server;

import lombok.*;
import lombok.experimental.Accessors;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;

/**
 * 封装响应信息（根据OutStream输入流封装）
 * 该对象需要提供核心方法 输出(静态资源)
 *
 * @author Fxz
 * @version 1.0
 * @date 2021-08-23 16:32
 */
@Accessors(chain = true)
@Builder
@With
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Response {

    private OutputStream outputStream;

    /**
     * @param path url 随后根据url来获取到静态资源的绝对路径 进一步根据绝对路径 读取静态资源文件 最终通过输出流输出
     */
    public void outputHtml(String path) throws IOException {
        //获取静态资源文件的绝对路径
        String absoluteResourcePath = StaticResourceUtil.getAbsolutePath(path);

        //输出静态资源文件
        File file = new File(absoluteResourcePath);
        if (file.exists()&&file.isFile()) {
            //读取静态资源文件 输出静态资源
            StaticResourceUtil.outputStaticResource(new FileInputStream(file),outputStream);

        } else {
            //输出404
            outPut(HttpProtocolUtil.getHttpHeader404());
        }
    }

    /**
     * 使用输出流输出指定字符串
     *
     * @param content
     * @throws IOException
     */
    public void outPut(String content) throws IOException {
        outputStream.write(content.getBytes());
    }
}
